import datetime

from aiogram import Router, types, F, Bot
from aiogram.filters import Command, BaseFilter, IS_ADMIN, ChatMemberUpdatedFilter, IS_NOT_MEMBER, ADMINISTRATOR, \
    PROMOTED_TRANSITION, Text
from aiogram.types import ChatMemberAdministrator, ChatMemberUpdated, callback_query
from aiogram.utils.markdown import hpre, hbold, hlink

import config
from handlers.users_message import delete_mess
from keyboards import menu_keys
from keyboards.callbacks_data import MenuCategory
from loader import db, scheduler, logger

router = Router()


# router.message.bind_filter(IsAdmin)
# router.message.bind_filter(F.chat.type == "private")

@router.message(
    F.chat.type == "private",
    commands=['start'])
async def start(message: types.Message, context: dict):
    users = context["users"]
    wor = "\n".join(context["stop_words"])
    text = f'Привет!\nТеперь добавь меня в чаты где нужна моя помощь.\n' \
           f'Основные настройки делаются в личке. \n'
    keys = menu_keys.admin_menu() if message.from_user.id in config.ADMIN_ID else menu_keys.client_menu()

    # db.add_default_words(message.from_user.id)
    db.add_client(message.from_user.id, message.from_user.username, message.from_user.full_name)
    await message.answer(text, reply_markup=keys)


@router.my_chat_member(
    ChatMemberUpdatedFilter(member_status_changed=PROMOTED_TRANSITION),
)
async def bot_added_as_admin(event: ChatMemberUpdated, bot: Bot, context: dict):
    print(event)
    if event.chat.type in ["group", "supergroup"]:
        db.add_chat(event.from_user.id, event.chat.id, 0)
        text = f"Привет! Спасибо, что добавили меня в " \
               f'{hlink(event.chat.title, event.chat.invite_link)}. Теперь можно назначать этой группе обязательные каналы.'
    elif event.chat.type == 'channel':
        db.add_chat(event.from_user.id, event.chat.id, 2)
        url = event.chat.invite_link if event.chat.invite_link else f"https://t.me/{event.chat.username}"
        text = f"Привет! Меня ту добавили в канал {hlink(event.chat.title, url)}\n" \
               f"Теперь его можно сделать обязательным для одной из ваших групп"
    context['users'] = db.get_all_clients()
    mess = await bot.send_message(chat_id=event.from_user.id, text=text)
    scheduler.add_job(delete_mess, args=(mess,), trigger='date',
                      run_date=datetime.datetime.now() + datetime.timedelta(seconds=60))

